package com.zzh.interview.satoken.listener;

import cn.dev33.satoken.listener.SaTokenListener;
import cn.dev33.satoken.listener.SaTokenListenerForLog;
import cn.dev33.satoken.listener.SaTokenListenerForSimple;
import cn.dev33.satoken.stp.SaLoginModel;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

import static com.zzh.interview.constant.RedisConstant.USER_LOGIN_CONFLICT_TOKEN_KEY;

/**
 * 自定义侦听器的实现 
 */
@Component
public class MySaTokenListener extends SaTokenListenerForLog {

    @Resource
    private RedisTemplate<String, String> redisTemplate;

    /*
     * SaTokenListenerForSimple 对所有事件提供了空实现，通过继承此类，你只需重写一部分方法即可实现一个可用的侦听器。
     */


    /**
     * 每次被顶下线时触发
     * @param loginType
     * @param loginId
     * @param tokenValue
     */
    @Override
    public void doReplaced(String loginType, Object loginId, String tokenValue) {
        redisTemplate.opsForSet().add(USER_LOGIN_CONFLICT_TOKEN_KEY, tokenValue);// 记录冲突的token
//        super.doReplaced(loginType, loginId, tokenValue);// 调用父类的方法，记录日志(避免重复记录日志)
    }

}